Read caches are well known, having been used to reduce the latency associated with accessing slow storage devices for many years.
Typically, caches are implanted in random access memories (RAM), which have much faster read and write cycle times than the storage devices where the actual data is stored. For example, CPU caches use very fast local memory to cache data that is stored in the computer's main memory. Storage controllers often implement caches that are used to replicate commonly used data that is stored on slower rotating storage, such as magnetic or optical disks.
As technology progresses, there are more options for memory and cache devices. For example, traditionally, there is a hierarchy of memory. This hierarchy includes one or two CPU caches, local memory typically in the form of dynamic RAM (DRAM) and magnetic storage or hard disks. As one traverses the hierarchy, the capacity of each memory device is much larger than the previous one, but the access time is also much slower.
Recently, solid state disks, or SSDs, have gained popularity as their density has increased. These devices now offer the ability to storage hundreds of gigabytes (GB) in a non-volatile or persistent manner. Further, their access times, which is the time required for the device to retrieve data, are much faster than traditional hard drives.
However, unlike other storage devices, there are several anomalies with SSDs. First, while read operations from SSDs may be in arbitrary sizes, write operations must be in multiples of a block size. Thus, regardless of the size of the data to be written, the entire block must be rewritten. Similarly, entire blocks must be erased at one time. Additionally, write operations are slower than read operations. Finally, SSDs also may have a limit on the number of write operations that may be performed to a particular block. These attributes make SSD suboptimal for many traditional cache applications.
However, most caching algorithms are designed for traditional memories, where read and write operations are nearly symmetric in terms of performance. Therefore, it would be beneficial if there was a read cache that was optimized for operation with a SSD device.